#pragma once

#include <vector>

using std::vector;

class MyMatrix
{

int m; // no of rows
int n; // no of cols

public:

	MyMatrix(double[], int);

    template <size_t M, size_t N> 
	MyMatrix(double (&matrix)[M][N], int, int);

	vector<double> * matrix;
	vector<vector<double> * > * twoDMatrix;

	void Add(double);
	void Add(MyMatrix);

	void Subtract(double);
	void Subtract(MyMatrix);

	void Multiply(double);
	void Multiply(MyMatrix);

	void Divide(double);
	void Divide(MyMatrix);

	void Transpose();
	void Inverse();

	void Prepend(MyMatrix);
	void Append(MyMatrix);

	MyMatrix CreateIdentityMatrix(int, int);

	~MyMatrix(void);
};